/****************************************Copyright (c)*************************
**                               版权所有 (C), 2020-2030, 零匙科技
**
**                                 https://www.0k.com/
**
**--------------文件信息-------------------------------------------------------
**文   件   名: leokey_ble_protocol.h
**描        述: 下发/上报数据处理函数
**使 用 说 明 :

                  *******非常重要，一定要看哦！！！********

** 1、用户在此文件中实现数据下发/上报功能
** 2、当开始某些宏定义后需要用户实现代码的函数内部有#err提示,完成函数后请删除该#err
**
**--------------当前版本修订---------------------------------------------------
** 版  本: v1.0.0
** 日　期: 2022年02月15日
** 描　述: 1:协议初版
** 作  者：zouchuan
**-----------------------------------------------------------------------------
******************************************************************************/
#ifndef _LEOKEY_BLE_PROTOCOL_H_
#define _LEOKEY_BLE_PROTOCOL_H_



/******************************************************************************
                            用户相关信息配置
******************************************************************************/
/******************************************************************************
                            1:修改产品信息                
******************************************************************************/
 


/******************************************************************************
                            2:MCU是否需要支固件升级                  
如需要支持MCU固件升级,请开启该宏
MCU可调用mcu_api.c文件内的mcu_firm_update_query()函数获取当前MCU固件更新情况
                        ********WARNING!!!**********
当前接收缓冲区为关闭固件更新功能的大小,固件升级包为256字节
如需要开启该功能,串口接收缓冲区会变大
******************************************************************************/
#define         SUPPORT_MCU_FIRM_UPDATE                 //开启MCU固件升级功能(默认关闭)


/******************************************************************************
                            3:定义收发缓存:
                        不使用OTA功能时,可修改为40
******************************************************************************/
#ifdef SUPPORT_MCU_FIRM_UPDATE
#define LEOKEY_BLE_UART_QUEUE_LMT             256             //数据接收队列大小,OTA时250字节每帧
#define LEOKEY_BLE_UART_RECV_BUF_LMT          256             //
#define LEOKEY_BLE_UART_SEND_BUF_LMT          40              //根据用户数据大小量定

#else
#define LEOKEY_BLE_UART_QUEUE_LMT             40              //数据接收队列大小,
#define LEOKEY_BLE_UART_RECV_BUF_LMT          40              //根据用户DP数据大小量定
#define LEOKEY_BLE_UART_SEND_BUF_LMT          40              //根据用户DP数据大小量定
#endif


/******************************************************************************
                      4:MCU是否需要支持校时功能                     
如需要请开启该宏,并在Protocol.c文件内mcu_write_rtctime实现代码
mcu_write_rtctime内部有#err提示,完成函数后请删除该#err
mcu在leokey_ble模块正确联网后可调用mcu_get_system_time()函数发起校时功能
******************************************************************************/
#define  SUPPORT_MCU_RTC_CHECK                //开启校时功能





unsigned char ble_cmd_data_handle(const unsigned char* data_buf, unsigned short len);

unsigned char ble_master_query_info(const unsigned char* data_buf, unsigned short len);


#ifdef SUPPORT_MCU_RTC_CHECK
/*****************************************************************************
函数名称 : mcu_write_rtctime
功能描述 : MCU校对本地RTC时钟
输入参数 : 无
返回参数 : 无
使用说明 : MCU需要自行实现该功能
*****************************************************************************/
unsigned char ble_write_mcu_rtctime(unsigned char time[]);

#endif



#ifdef SUPPORT_MCU_FIRM_UPDATE
/*****************************************************************************
函数名称 : mcu_ota_request_event
功能描述 : OTA请求响应
输入参数 : 无
返回参数 : 无
使用说明 : 上报当前MCU固件版本信息
*****************************************************************************/
void mcu_ota_request_event(void);


/*****************************************************************************
函数名称 : mcu_ota_order_event
功能描述 : OTA升级通知响应
输入参数 : 无
返回参数 : 无
使用说明 : 校验需要升级的固件信息
*****************************************************************************/
void mcu_ota_order_event(void);


/*****************************************************************************
函数名称 : ota_fw_data_handle
功能描述 : OTA固件数据处理
输入参数 : fw_offset：固件偏移量
           *data：固件数据指针
返回参数 : 无
使用说明 : 处理后台下发的固件数据
*****************************************************************************/
void ota_fw_data_handle(unsigned int fw_offset,char *data);


/*****************************************************************************
函数名称 : mcu_ota_fw_request_event
功能描述 : OTA固件请求响应处理
输入参数 : 无
返回参数 : 无
使用说明 : 处理下发的固件数据
*****************************************************************************/
void mcu_ota_fw_request_event(void);


/*****************************************************************************
函数名称 : mcu_ota_result_event
功能描述 : MCU OTA结果处理（保留）
输入参数 : 无
返回参数 : 无
使用说明 : OTA结果上报响应处理
*****************************************************************************/
void mcu_ota_result_event(void);


#endif


#endif

